package com.jrx.anytxn.customer.dto.rights;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jrx.anytxn.param.dto.rights.PrRightsQualificationRes;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 *  客户权益响应实体
 */
public class CustRightRes implements Serializable {
    private Long id;
    /**
     * 客户权益ID
     */
    private Long custRightId;
    /**
     * 生效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date effectDate;
    /**
     * 失效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date expiresDate;
    /**
     * 权益 id
     */
    private String rightsId;
    /**
     * 权益类型
     * "01 按天免息
     * 02 按折扣免息
     * 03: 会员类
     * 04：出行类
     * 05：购物类
     * 06：通用类
     * 07：特定类
     * 08：现金优惠券
     * 09：折扣优惠券
     * 99：其他"
     */
    private String rightsType;

    /**
     * 权益名称
     */
    private String rightsName;

    /**
     * 权益使用规则
     */
    private String rightsUseRule;

    /**
     * 权益子名称
     */
    private String rightsSubName;

    /**
     * 面值（代金券有的值）
     */
    private BigDecimal faceValue;
    /**
     * 门槛（代金券和折扣券有实际业务值，其它类型权益为0）
     */
    private BigDecimal thresholdPrice;

    /**
     * 折扣值[1-10)之间（默认为0，精度2）
     */
    private BigDecimal discountValue;

    /**
     * 折扣上限即每笔订单优惠上限金额(单位：元),仅折扣券有实际业务值
     */
    private BigDecimal discountsCeiling;

    /**
     * 折扣天数
     */
    private Integer discountDays;
    /**
     * 折扣利率
     */
    private BigDecimal discountRate;
    /**
     * 折扣计算方式
     */
    private String discountType;
    /**
     * 折扣期数
     */
    private Integer discountTerms;
    /**
     * 最小借款金额
     */
    private BigDecimal minAmount;
    /**
     * 最大借款金额
     */
    private BigDecimal maxAmount;
    /**
     * 权益状态 0-未使用 1-已使用 3：部分使用
     */
    private String rightsStatus;
    /**
     * 订单id
     */
    private String loanId;
    /**
     * 允许借款期数
     */
    private String allowLoanTenor;
    /**
     * 适用产品
     */
    private String allowProducts;
    /**
     * 权益类型为资格类时 待兑换的候选权益
     */
    List<PrRightsQualificationRes> qualificationCandidate;

    /**
     * 权益数量
     */
    private Integer rightsQuantity;
    /**
     * 活动id
     */
    private String activityId;
    /**
     * 权益资格id
     */
    private String rightsQualificationId;
    /**
     * 是否过期标志
     */
    private String dateEffectiveState;
    /**
     * 版本号
     */
    private Integer recordVersionNumber;
    /**
     * 权益资格列表图标
     */
    private String logoUrl;

    /**
     * 是否可循环使用
     * 仅限折扣券有值
     * 0: 不可循环，一次使用
     * 1: 可循环使用"
     */
    private String cycleUse;
    /**
     * 折扣已使用金额 仅适用于折扣券
     */
    private BigDecimal discountAmtUsed;

    /**
     * 循环折扣金额上限 (仅循环类折扣有值)
     */
    private BigDecimal discountAmtLimit;
    /**
     * 子渠道
     */
    private String subChannel;
    /**
     * 是否可跳转标识 0-否 1-是
     */
    private String enableJumpFlag = "0";
    /**
     * 小程序跳转链接
     */
    private String appletJumpLink;
    /**
     * 小程序appId
     */
    private String appletAppId;

    public Long getCustRightId() {
        return custRightId;
    }

    public void setCustRightId(Long custRightId) {
        this.custRightId = custRightId;
    }

    public Date getEffectDate() {
        return effectDate;
    }

    public void setEffectDate(Date effectDate) {
        this.effectDate = effectDate;
    }

    public Date getExpiresDate() {
        return expiresDate;
    }

    public void setExpiresDate(Date expiresDate) {
        this.expiresDate = expiresDate;
    }

    public String getRightsType() {
        return rightsType;
    }

    public void setRightsType(String rightsType) {
        this.rightsType = rightsType;
    }

    public String getRightsName() {
        return rightsName;
    }

    public void setRightsName(String rightsName) {
        this.rightsName = rightsName;
    }

    public Integer getDiscountDays() {
        return discountDays;
    }

    public void setDiscountDays(Integer discountDays) {
        this.discountDays = discountDays;
    }

    public BigDecimal getDiscountRate() {
        return discountRate;
    }

    public void setDiscountRate(BigDecimal discountRate) {
        this.discountRate = discountRate;
    }

    public String getDiscountType() {
        return discountType;
    }

    public void setDiscountType(String discountType) {
        this.discountType = discountType;
    }

    public Integer getDiscountTerms() {
        return discountTerms;
    }

    public void setDiscountTerms(Integer discountTerms) {
        this.discountTerms = discountTerms;
    }

    public BigDecimal getMinAmount() {
        return minAmount;
    }

    public void setMinAmount(BigDecimal minAmount) {
        this.minAmount = minAmount;
    }

    public BigDecimal getMaxAmount() {
        return maxAmount;
    }

    public void setMaxAmount(BigDecimal maxAmount) {
        this.maxAmount = maxAmount;
    }

    public String getRightsStatus() {
        return rightsStatus;
    }

    public void setRightsStatus(String rightsStatus) {
        this.rightsStatus = rightsStatus;
    }

    public String getLoanId() {
        return loanId;
    }

    public void setLoanId(String loanId) {
        this.loanId = loanId;
    }

    public String getAllowLoanTenor() {
        return allowLoanTenor;
    }

    public void setAllowLoanTenor(String allowLoanTenor) {
        this.allowLoanTenor = allowLoanTenor;
    }

    public String getAllowProducts() {
        return allowProducts;
    }

    public void setAllowProducts(String allowProducts) {
        this.allowProducts = allowProducts;
    }

    public Integer getRightsQuantity() {
        return rightsQuantity;
    }

    public void setRightsQuantity(Integer rightsQuantity) {
        this.rightsQuantity = rightsQuantity;
    }

    public String getRightsQualificationId() {
        return rightsQualificationId;
    }

    public void setRightsQualificationId(String rightsQualificationId) {
        this.rightsQualificationId = rightsQualificationId;
    }

    public String getDateEffectiveState() {
        return dateEffectiveState;
    }

    public void setDateEffectiveState(String dateEffectiveState) {
        this.dateEffectiveState = dateEffectiveState;
    }

    public List<PrRightsQualificationRes> getQualificationCandidate() {
        return qualificationCandidate;
    }

    public void setQualificationCandidate(List<PrRightsQualificationRes> qualificationCandidate) {
        this.qualificationCandidate = qualificationCandidate;
    }

    public String getActivityId() {
        return activityId;
    }

    public void setActivityId(String activityId) {
        this.activityId = activityId;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getRecordVersionNumber() {
        return recordVersionNumber;
    }

    public void setRecordVersionNumber(Integer recordVersionNumber) {
        this.recordVersionNumber = recordVersionNumber;
    }

    public BigDecimal getFaceValue() {
        return faceValue;
    }

    public void setFaceValue(BigDecimal faceValue) {
        this.faceValue = faceValue;
    }

    public BigDecimal getThresholdPrice() {
        return thresholdPrice;
    }

    public void setThresholdPrice(BigDecimal thresholdPrice) {
        this.thresholdPrice = thresholdPrice;
    }

    public BigDecimal getDiscountValue() {
        return discountValue;
    }

    public void setDiscountValue(BigDecimal discountValue) {
        this.discountValue = discountValue;
    }

    public BigDecimal getDiscountsCeiling() {
        return discountsCeiling;
    }

    public void setDiscountsCeiling(BigDecimal discountsCeiling) {
        this.discountsCeiling = discountsCeiling;
    }

    public String getRightsId() {
        return rightsId;
    }

    public void setRightsId(String rightsId) {
        this.rightsId = rightsId;
    }

    public String getRightsSubName() {
        return rightsSubName;
    }

    public void setRightsSubName(String rightsSubName) {
        this.rightsSubName = rightsSubName;
    }

    public String getLogoUrl() {
        return logoUrl;
    }

    public void setLogoUrl(String logoUrl) {
        this.logoUrl = logoUrl;
    }

    public String getCycleUse() {
        return cycleUse;
    }

    public void setCycleUse(String cycleUse) {
        this.cycleUse = cycleUse;
    }

    public BigDecimal getDiscountAmtUsed() {
        return discountAmtUsed;
    }

    public void setDiscountAmtUsed(BigDecimal discountAmtUsed) {
        this.discountAmtUsed = discountAmtUsed;
    }

    public BigDecimal getDiscountAmtLimit() {
        return discountAmtLimit;
    }

    public void setDiscountAmtLimit(BigDecimal discountAmtLimit) {
        this.discountAmtLimit = discountAmtLimit;
    }

    public String getRightsUseRule() {
        return rightsUseRule;
    }

    public void setRightsUseRule(String rightsUseRule) {
        this.rightsUseRule = rightsUseRule;
    }

    public String getSubChannel() {
        return subChannel;
    }

    public void setSubChannel(String subChannel) {
        this.subChannel = subChannel;
    }

    public String getEnableJumpFlag() {
        return enableJumpFlag;
    }

    public void setEnableJumpFlag(String enableJumpFlag) {
        this.enableJumpFlag = enableJumpFlag;
    }

    public String getAppletJumpLink() {
        return appletJumpLink;
    }

    public void setAppletJumpLink(String appletJumpLink) {
        this.appletJumpLink = appletJumpLink;
    }

    public String getAppletAppId() {
        return appletAppId;
    }

    public void setAppletAppId(String appletAppId) {
        this.appletAppId = appletAppId;
    }
}
